package com.yifeng.common;

public final class SqlStatements {

    /*
    负责人：倾枫

    功能：根据用户名和密码查询用户信息

    参数：user_name - 用户名, password - 密码

    返回值: 用户信息结果集
    */
    public static final String USER_FIND_BY_USERNAME_AND_PASSWORD="select * from tb_user where user_name=? and password=?";

    /*
    负责人：倾枫

    功能：检查用户名是否已存在

    参数：user_name - 用户名

    返回值: 存在返回大于0的值，不存在返回0
    */
    public static final String USER_EXISTS_BY_USERNAME = "SELECT * FROM tb_user WHERE user_name=?";

    /*
    负责人：未知

    功能：注册新用户

    参数：user_name - 用户名, password - 密码, role - 角色, user_alias - 用户别名, avatar - 头像

    返回值: 插入成功的记录数
    */
    public static final String USER_INSERT= "INSERT INTO tb_user (user_name, password, role, create_time) VALUES (?, ?, ?, ?)";

    /*
    负责人：未知

    功能：分页查询所有用户

    参数：limit - 每页记录数, offset - 偏移量

    返回值: 用户列表结果集
    */
    public static final String USER_FIND_ALL = "SELECT user_id, user_name, password, role, user_alias, create_time FROM tb_user";

    /*
    负责人：未知

    功能：根据角色分页查询用户

    参数：role - 角色, limit - 每页记录数, offset - 偏移量

    返回值: 指定角色的用户列表结果集
    */
    public static final String USER_FIND_BY_ROLE_PAGINATED=null;
    /*
    负责人：未知

    功能：根据用户ID删除用户

    参数：user_id - 用户ID

    返回值: 删除成功的记录数
    */
    public static final String USER_DELETE_BY_ID= "DELETE FROM tb_user WHERE user_id = ?";

    /*
    负责人：xiaoq

    功能：分页查询所有新闻

    参数：limit - 每页记录数, offset - 偏移量

    返回值: 新闻列表结果集
    */
    public static final String NEWS_FIND_ALL_PAGINATED=
            "SELECT * FROM tb_news ORDER BY publish_time DESC LIMIT ? OFFSET ?";

    /*
    负责人：xiaoq

    功能：根据状态分页查询新闻

    参数：status - 新闻状态, limit - 每页记录数, offset - 偏移量

    返回值: 指定状态的新闻列表结果集
    */
    public static final String NEWS_FIND_BY_STATUS_PAGINATED =
            "SELECT * FROM tb_news WHERE status = ? ORDER BY publish_time DESC LIMIT ? OFFSET ?";
    /*
    负责人：xiaoq

    功能：根据新闻ID查询新闻详情

    参数：news_id - 新闻ID

    返回值: 新闻详情结果集
    */
    public static final String NEWS_FIND_BY_ID =
            "SELECT * FROM tb_news WHERE news_id = ?";
    /*
    负责人：xiaoq

    功能：检查新闻ID是否存在

    参数：news_id - 新闻ID

    返回值: 存在返回大于0的值，不存在返回0
    */
    public static final String NEWS_EXISTS_BY_ID =
            "SELECT count(*) FROM tb_news WHERE news_id = ?";

    /*
    负责人：xiaoq

    功能：插入新 新闻

    参数：title - 标题, content - 内容, category - 分类, author - 作者, publish_time - 发布时间,
          view_count - 浏览量, status - 状态, pic_new - 新闻图片

    返回值: 插入成功的记录数
    */
    public static final String NEWS_INSERT =
            "INSERT INTO tb_news (title, content, category, author, pic_new, status) VALUES (?, ?, ?, ?, ?, ?)";

    /*
    负责人：xiaoq

    功能：更新新闻信息

    参数：title - 标题, content - 内容, category - 分类, author - 作者, publish_time - 发布时间,
          view_count - 浏览量, status - 状态, pic_new - 新闻图片, news_id - 新闻ID

    返回值: 更新成功的记录数
    */
    public static final String NEWS_UPDATE =
            "UPDATE tb_news SET title = ?, content = ?, category = ?, author = ?, pic_new = ?, status = ?, update_time = CURRENT_TIMESTAMP WHERE news_id = ?";
    /*
    负责人：xiaoq

    功能：根据新闻ID删除新闻

    参数：news_id - 新闻ID

    返回值: 删除成功的记录数
    */
    public static final String NEWS_DELETE_BY_ID =
            "DELETE FROM tb_news WHERE news_id = ?";
    /*
    负责人：xiaoq

    功能：根据新闻ID和状态查询新闻详情

    参数：news_id - 新闻ID

    返回值: 指定状态和ID的新闻详情结果集
    */
    public static final String NEWS_FIND_BY_ID_AMD_STATUS =
            "SELECT * FROM tb_news WHERE news_id = ? AND status = ?";

    /*
    负责人：xiaoq

    功能：分页查询新闻（按发布时间倒序）

    参数：limit - 每页记录数, offset - 偏移量

    返回值: 新闻列表结果集
    */
    public static final String NEWS_SELECT_PAGINATED =
            "SELECT * FROM tb_news ORDER BY publish_time DESC LIMIT ?  OFFSET ?";

    /*
    负责人：xiaoq

    功能：根据关键词搜索新闻

    参数：keyword - 搜索关键词

    返回值: 匹配关键词的新闻列表结果集
    */
    public static final String NEWS_SEARCH_BY_KEYWORD=
            "SELECT * FROM tb_news WHERE (title LIKE ? OR content LIKE ?) AND status = 1 ORDER BY publish_time DESC";

    /*
    负责人：xiaoq

    功能：查询所有可见新闻

    参数：无

    返回值: 状态为1的新闻列表结果集
    */
    public static final String NEWS_FIND_ALL_VISIBLE =
            "SELECT * FROM tb_news WHERE status = 1 ORDER BY publish_time DESC";

    /*
    负责人：xiaoq

    功能：根据类型查询新闻

    参数：types - 新闻类型列表

    返回值: 指定类型的新闻列表结果集
    */
    public static final String NEWS_SELECT_BY_TYPES =
            "SELECT * FROM tb_news WHERE category IN (%s) AND status = 1 ORDER BY publish_time DESC";

    /*
    负责人：xiaoq

    功能：查询包含图片的新闻

    参数：无

    返回值: 有图片的新闻列表结果集
    */
    public static final String NEWS_SELECT_WITH_IMAGES=
            "SELECT * FROM tb_news WHERE pic_new IS NOT NULL AND pic_new != '' AND status = 1 ORDER BY publish_time DESC LIMIT 10";



    //不分页返回新闻列表
    public static final String NEWS_FIND_ALL = "SELECT * FROM tb_news ORDER BY publish_time DESC";
    public static final String NEWS_FIND_BY_STATUS = "SELECT * FROM tb_news WHERE status = ? ORDER BY publish_time DESC";



    /*
    负责人:鹿鸣

    功能：查询所有资源

    参数：无

    返回值: 资源列表结果集
    */
    public static final String RESOURCE_FIND_ALL =
            "SELECT resource_id, file_name, uploader, type, file_path, file_size, upload_time, downloadCount " +
                    "FROM tb_resource " +
                    "ORDER BY upload_time DESC";

    /*
       负责人:鹿鸣

       功能：根据id获取资源信息

       参数：无

       返回值: 一条资源信息
       */
    public static final String   RESOURCE_FIND_BY_ID=
            "SELECT resource_id, file_name, uploader, type, file_path, file_size, upload_time, downloadCount " +
                    "FROM tb_resource " +
                    "where resource_id =?";

    /*
         负责人:鹿鸣

       功能：根据id更新下载次数

       参数：无

       返回值:更新下载次数
       */
    public static final String RESOURCE_UPDATE_DOWNLOADCOUNT_BYID="UPDATE tb_resource SET downloadCount = downloadCount + 1 WHERE resource_id = ?";



    /*
   负责人:鹿鸣

    功能：根据关键词搜索资源

    参数：keyword - 搜索关键词, limit - 每页记录数, offset - 偏移量

    返回值: 匹配关键词的资源列表结果集
    */
    public static final String RESOURCE_SEARCH_PAGINATED =
            "SELECT resource_id, file_name, uploader, type, file_path, " +
                    "file_size, upload_time, downloadCount " +
                    "FROM tb_resource " +
                    "WHERE file_name LIKE ? " +
                    "ORDER BY upload_time DESC ";

    /*
    负责人:鹿鸣

    功能：插入新资源

    参数：file_name - 文件名, uploader - 上传者, type - 类型, file_path - 文件路径,
          file_size - 文件大小, download_count - 下载次数

    返回值: 插入成功的记录数
    */
    public static final String RESOURCE_INSERT =
            "INSERT INTO tb_resource (file_name, uploader, type, file_path, file_size, downloadCount) " +
                    "VALUES (?, ?, ?, ?, ?, ?)";



    /*
     负责人:鹿鸣

    功能：根据资源ID删除资源

    参数：resource_id - 资源ID

    返回值: 删除成功的记录数
    */
    public static final String RESOURCE_DELETE = "DELETE FROM tb_resource WHERE resource_id = ?";

    // 私有构造函数，防止实例化
    private SqlStatements() {
        throw new UnsupportedOperationException("这是一个实用程序类，不能实例化");
    }
}